Many applications support the ability to undo single or multiple operations that are performed while the application is being executed. For example, word processors typically provide the ability to undo and redo one or many recent text entries. Similarly, in a modeling environment, the execution of a model component with a user supplied parameter may result in a less than desirable result. Frequently the modeling application will allow the user to undo the results of a last operation, such as the execution of a particular component, thereby allowing a user to substitute a different parameter value. Following the substitution of a parameter the model may be re-executed. Similarly, the user may decide that a previous iteration produced a more desirable result and may choose to redo a previously undone operation.
The undo and redo functionality is designed by authors of software applications. Unfortunately, conventional techniques may place a large burden on application authors to create and manage undo and redo information. Application authors are frequently required to define the handling of undo and redo operations for each state change caused by operations in an application. Exemplary state changes in an application include the creation of objects, the deletion of objects and a change in a property value associated with an object. This customization of the handling of undo and redo information is a time-intensive and error-prone procedure.